想有個左右滑動換頁的效果
查詢到view pager可以做到此功能,不過現在官方好像建議使用viewPage2
實際用android studio 4.0 component搜尋也只有出現view pager2
implementation 'com.google.android.material:material:1.1.0'
implementation "androidx.viewpager2:viewpager2:1.0.0"
接着將viewpager2加入activity.xml中
這個屬性可設置滑動方向
android:orientation="horizontal"
滑動的頁面爲fragment,例如我們想要3個頁面
就新增3個fragment,FirstFragment(),SecondFragment(),ThirdFragment()
再建立一個class繼承FragmentStateAdapter
class PageAdapter(fragmentManager: FragmentManager, lifecycle: Lifecycle) :
    FragmentStateAdapter(fragmentManager, lifecycle) {
    var fragments: ArrayList<Fragment> = arrayListOf(
        FirstFragment(),
        SecondFragment(),
        ThirdFragment()
    )
    override fun getItemCount(): Int {
        return fragments.size
    }
    override fun createFragment(position: Int): Fragment {
        return fragments[position]
    }
}
回到MainActivity,連接adapter
val pageAdapter = PageAdapter(supportFragmentManager, lifecycle)
        viewPager2.adapter = pageAdapter
初步的效果
因爲除了滑動切換,我們還要可以點選切換的功能,就像瀏覽器的分頁
要再加入TabLayout,它是屬於google.android.material的一部分
所以前面的dependencies已經有加入了
接着也把他放到layout,放在viewpager2上
他也是一個viewgroup,視我們要幾個分頁,加入TabItem
<com.google.android.material.tabs.TabLayout
        android:id="@+id/tabLayout"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginBottom="1dp"
        app:layout_constraintBottom_toTopOf="@+id/viewPager2"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@+id/guideline"
        app:tabSelectedTextColor="#389DC3"
        app:tabIndicatorColor="#389DC3"
        app:tabIndicatorHeight="5dp">
        <com.google.android.material.tabs.TabItem
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="First" />
        <com.google.android.material.tabs.TabItem
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Second" />
        <com.google.android.material.tabs.TabItem
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Third" />
    </com.google.android.material.tabs.TabLayout>
記錄一下TabLayout有幾個應該會常用的屬性
接著在程式中只需要用TabLayoutMediator傳入相對參數
並呼叫.attch()就可以與viewpager2連接,滑動二者都會對應改變
        val title: ArrayList<String> = arrayListOf("今天", "明天", "未來七天")
        TabLayoutMediator(tabLayout, viewPager2) { tab, position ->
            tab.text = title[position]
        }.attach()

參考
https://developer.android.google.cn/training/animation/screen-slide-2?hl=zh-cn
https://developer.android.com/reference/com/google/android/material/tabs/TabLayout
https://codertw.com/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80/712473/